package com.asset.utils;

import com.asset.model.entity.Company;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class TreeUtil {
    /**
     * 用来给公司机构来做机构树的
     * 构建机构树
     * @param list 平级机构列表（需包含 parent_id ）
     * @return 树形结构根节点
     */
    public static List<Company> buildTree(List<Company> list) {
        List<Company> rootNodes = new ArrayList<>();
        Map<Integer, Company> nodeMap = list.stream()
                .collect(Collectors.toMap(Company::getId, node -> node));
        System.out.println(nodeMap+"hellos");
        for (Company node : list) {
            Integer  parentId = node.getParentId();
            if (parentId == null) {
                // 根节点（集团）
                rootNodes.add(node);
            } else {
                // 子节点挂到父节点下
                Company parent = nodeMap.get(parentId);
                if (parent != null) {
                    parent.getChildren().add(node);
                }
            }
        }
        return rootNodes;
    }
}
